Skip to content

isNaN 和 Number.isNaN 区别

精准、值的转化

isNaN

isNaN 是 ES5 isNaN 会尝试把值 转化为 Number 类型

  • isNaN('hello') true
  • isNaN([]) false
  • isNaN(undefined) true
  • isNaN('4') false

Number.isNaN

Number.isNaN 是 ES6, 优势更加精准 现对比类型

  • Number.isNaN(undefined) //false
  • Number.isNaN(NaN) //true
  • Number.isNaN(null) // false
  • const abc = '12' Number.isNaN(abc) === false //
js
isNaN("hello");         // true,因为 "hello" 被尝试转换为数字
Number.isNaN("hello"); // false,"hello" 不是 NaN

isNaN(NaN);             // true
Number.isNaN(NaN);     // true

isNaN(undefined);       // true,undefined 被尝试转换为 NaN
Number.isNaN(undefined); // false

isNaN(null);            // false,null 被尝试转换为 0
Number.isNaN(null);     // false

isNaN({});              // true,{} 被尝试转换为 NaN
Number.isNaN({});      // false

Number.isNaN polyfill

js
if (!Number.isNaN) {
  Number.isNaN = function(value) {
    return typeof value === "number" && isNaN(value);
  };
}

在 MIT 许可下发布